/*
  将下面异步代码使用 Promise 的方法改进
  尽量用看上去像同步代码的方式
  setTimeout(function () {
    var a = 'hello'
    setTimeout(function () {
      var b = 'lagou'
      setTimeout(function () {
        var c = 'I ♥ U'
        console.log(a + b +c)
      }, 10)
    }, 10)
  }, 10)
*/


/**
 * 方式1
 * 使用async/await 语法糖
 */
async function print1 () {
  const hello = await Promise.resolve('hello');
  const lagou = await Promise.resolve('lagou');
  const love = await Promise.resolve('I ♥ U');
  console.log(`${hello} ${lagou} ${love}`);
}
print1();


/**
 * 方式2
 * 使用Promise的then为链式调用，且依次传递，且return作为接下来一个then参数
 */
Promise
  .resolve('hello')
  .then(value => {
    return `${value} lagou`
  })
  .then(value => {
    console.log(`${value} I ♥ U`)
  })


/** 
 * 方式3
 * 使用Promise all方法
*/

Promise
  .all([
    Promise.resolve('hello'),
    Promise.resolve('lagou'),
    Promise.resolve('I ♥ U'),
  ])
  .then(values => console.log(...values))